import { EntitySchema } from 'typeorm'
import bcrypt from 'bcrypt'

export default new EntitySchema({
  name: 'User',
  columns: {
    userId: {
      type: 'int',
      primary: true,
      // 自增主键
      generated: 'increment'
    },
    name: {
      type: 'varchar',
      length: 50,
      nullable: false,
      comment: '用户名'
    },
    password: {
      type: 'varchar',
      length: 100,
      nullable: false,
      comment: '用户密码'
    },
    phone: {
      type: 'varchar',
      length: 11,
      comment: '手机号',
      nullable: true
      // 设置手机号唯一
      // unique: true
    },
    status: {
      type: 'int',
      commit: '状态 0-禁用; 1-启用'
    },

    nickname: {
      type: 'varchar',
      length: 50,
      nullable: true,
      comment: '昵称'
    },

    email: {
      type: 'text',
      nullable: true
    },
    avatar: {
      type: 'text',
      comment: '头像',
      nullable: true
    },

    createTime: {
      type: 'datetime',
      default: () => 'CURRENT_TIMESTAMP'
    },
    updateTime: {
      type: 'datetime',
      default: () => 'CURRENT_TIMESTAMP'
    },

    isDelete: {
      type: 'int',
      comment: '是否被删除; 0-未删除， 1-已删除',
      default: 0
    }
  },

  relations: {
    // 最终在数据库会自动创建 user_roles_role 表
    // 注意： 如果名字使用 roleList, 则生成的关联表为  user_role_list_role 小驼峰还是变成了下划线分割
    roles: {
      target: 'Role',
      type: 'many-to-many',
      // joinTable是表达 多对多 表的关系
      joinTable: true
    }
  }
})
